/**
 * @filename:SwitchOrderInfoService 2020年06月11日
 * @project hotel-switch  V1.0
 * Copyright(c) 2020 Zhang·JZ Co. Ltd.
 * All right reserved.
 */
package hotel.switchs.oversea.biz.service;

import hotel.base.oversea.service.BaseService;
import hotel.base.oversea.utils.Result;
import hotel.switchs.oversea.api.VO.order.OrderListSearchVO;
import hotel.switchs.oversea.api.entity.order.SwitchOrderPool;

import java.util.List;
import java.util.Map;


/**
 * @Description:TODO(携程订单池pool信息服务层)
 * @version: V1.0
 * @author: Qiu·YY
 */
public interface SwitchOrderPoolService extends BaseService<SwitchOrderPool> {
    /**
     * 修改订单池 美团状态
     *
     * @return
     */
    Result<Object> updatePoolIsOrderByMdkey(List<String> list);

    Integer hasMtBooking(String swOrderId);

    Integer checkExistValiBookingBySwOrderId(String swOrderId);

    /**
     * <H1>获取可向美团下单的所有信息  根据时间asc排序</H1>
     *
     * @param
     * @return hotel.switchs.oversea.api.entity.order.SwitchOrderPool
     * @author Qiuyy
     * @date 2020/8/17
     */
    List<SwitchOrderPool> getSwitchOrderInfoForMtAsc();

    /**
     * <H1>更新订单状态</H1>
     *
     * @param switchOrderPool
     * @author HuangT
     * @date 2020/7/9 16:19
     */
    void updateOrderResult(SwitchOrderPool switchOrderPool);

    Result<Object> getDelayChangeBookingOrders();

    Result<Object> getDelayRejectBookingOrders();

    /**
     * <H1>订单信息列表</H1>
     *
     * @param orderListSearchVO
     * @return hotel.base.oversea.utils.Result<java.lang.Object>
     * @author HuangT
     * @date 2020/7/20 18:02
     */
    Result<Object> getOrderList(OrderListSearchVO orderListSearchVO);

    /**
     * <H1>人工下单该状态</H1>
     *
     * @param orderId 实体对象
     * @return hotel.base.oversea.utils.Result<java.lang.Object>
     * @author HuangT
     * @Date 2020/9/7 15:01
     */
    Result<Object> updateOrderStateAboutRgxd(SwitchOrderPool orderId);
    Result<Object> updateOrderStateAboutReject(String orderId);
    void updateOrderResultNotSaveLog(SwitchOrderPool orderId);

    Result<Object> rgPoolOrder(String orderId);

    Result<Object> unlockPoolOrder(String orderId);

    Result<Object> updateOrderStateAboutLossBefore(SwitchOrderPool switchOrderPool);

    Result<Object> updateOrderStateAboutLossLast(SwitchOrderPool switchOrderPool);

    Result<Object> updateMtOrderIdByOrderId(Map map) ;
}


